<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="com.zgl.youshuda.core.utils.OperResult" %>
<%@ page import="com.zgl.youshuda.core.utils.codenode.MksNodeTool" %>
<%@ page import="com.zgl.youshuda.core.utils.CommonUtil" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.zgl.youshuda.core.utils.BussCustomHashMap" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%--
	//创建人: 任刚
    //创建时间: 2025-06-10

	//以下信息用于当前程序页面在平台中自动注册激活
    <descInfo>
        <businessDesc>
            表格树数据返回 //请描述当前代码页面的功能
        </businessDesc>
        <businessType>
            A8F483A996254646BFD8396FD3C3ABCB //请从粘贴从组件类型管理中注册获得的类型编码
        </businessType>
        <processDesc>
            //请描述当前代码页面的详细实现过程
			根据分页数据查询每条数据下的子节点数据，此处会存在递归查询的情况
        </processDesc>
        <inParams>
            //type 请修改为传入此程序页面的参数类型，如：String、Integer、Map等变量管理窗口中的所有变量类型之一
            //enName 请修改为传入此程序页面的参数名，如：warehourseCode
            //cnName 请修改为传入此程序页面的参数描述，如：仓库编号
        </inParams>
        <outParams>
            {
                "msg": "查询成功", //返回当前程序页面执行是否成功初始信息到图形化程序（实际返回值可由页面程序维护）
                "code": 200, //返回指定的HTTP页面初始状态编码用于图形化程序跟踪，如200执行成功，500服务器异常，404未找到页面等（实际返回值根据页面程序执行结果自动修改）
                "data": {}, //返回当前页面程序执行结果数据到图形化编程页面，可以是String、Integer、Map等变量管理窗口中的所有变量类型之一
                "success": true //返回当前页面是否执行成功状态用于图形化程序跟踪，值只有true和false（实际返回值根据页面程序执行结果自动修改）
            }
        </outParams>
    </descInfo>
--%>

<%

    MksNodeTool mksNodeTool = new MksNodeTool(pageContext); //初始化图形编程平台工具包
    mksNodeTool.responseUtil.send(running(mksNodeTool)); //调用图形编程入口方法

%>
<%!
    /**
     * 初始化构造函数
     * running 为统一的调用方法,方法名禁止修改
     */
    private OperResult running(MksNodeTool mksNodeTool) {

        //初始化程序执行出参变量数据
        OperResult result = OperResult.getSuccessInstance();

        try {
            /**
             * 获取当次分页的数据
             */
            List<BussCustomHashMap> pageList = mksNodeTool.getVarData("result");
            if  (pageList != null && pageList.size() > 0) {
                for (BussCustomHashMap pageData : pageList) {
                    pageData.put("_childrenData", getChildData(mksNodeTool, pageData));
                }
            }
            mksNodeTool.setVarData("result", pageList);
        } catch (Exception e) {
            //将异常日志输出到图形化程序控制台
            result.errorResult(CommonUtil.getExceptionAllInfo(e));
        } finally {
            //将当前页面程序执行结果数据返回至图形化程序
            return result;
        }
    }

    private List<BussCustomHashMap> getChildData(MksNodeTool mksNodeTool, BussCustomHashMap parentData) throws Exception {
        //数据查询sql
        String findSql = "select "+mksNodeTool.getVarData("allColumns")
                +" from "+mksNodeTool.getVarData("tableName")
                + mksNodeTool.getVarData("whereCondition");
        if (mksNodeTool.getVarData("whereCondition") != null && !"".equals(mksNodeTool.getVarData("whereCondition"))) {
            findSql += " and "+mksNodeTool.getVarData("childrenColumn")+" = "+parentData.get(mksNodeTool.getVarData("parentColumn"));
        }else{
            findSql += " where "+mksNodeTool.getVarData("childrenColumn")+" = "+parentData.get(mksNodeTool.getVarData("parentColumn"));
        }
        findSql += mksNodeTool.getVarData("orderByCondition");
        List<BussCustomHashMap> childrenList = mksNodeTool.DB.sqlSelect(findSql);
        for (BussCustomHashMap childrenData : childrenList) {
            childrenData.put("_childrenData", getChildData(mksNodeTool, childrenData));
        }
        return childrenList;
    }
%>
